.global getNum_asm

# r0 - rückgabe der Zahl
# r1 - übergebene adresse laden
# r2 - aktuelles Char
# r3 - tmp Buffer Char für Rückgabe 

getNum_asm:
	str fp, [sp, #-4]!
	mov fp, sp
	stmfd sp!, {r1-r3, lr}
	
 	ldr r1, [r0]
	
	While_01:
        ldrb r2, [r1], #1

        cmp r2, #0          @ Binaere 0 gefunden?
        beq EndWhile_01     @ Dann Ende

	If_01:
		cmp r2, #'0'         @ Zeichen kleiner ASCII 0
		blo EndIf_01

		If_02:
            cmp r2, #'9'     @ Zeichen groesser ASCII 9
            bgt EndIf_01
		Else_02:
		    @Zeichen merken 
            mov r3, r3, LSL #4
            sub r2, r2, #'0'    @ "Echten" Zahlenwert errechnen
            and r2, r2, #0xF    @ Alles auf 0 setzen bis auf das erste Byte
            add r3, r3, r2      @ Zahl auf tmp Reg aufaddieren
	EndIf_01:
        add r1, #1
        mov r2, #0           @ aktuelles Zeichen reg leeren
		b While_01
	
    EndWhile_01:
	
	ldmfd sp!, {r1-r3, lr}
	ldr fp, [sp], #4
bx lr
